home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
pascal
/
tpfast30.zip
/
FASTKBD.ASM
< prev
next >
Wrap
Assembly Source File
|
1990-09-26
|
22KB
|
523 lines
; _______________________________________________________________
; | |
; | Copyright (C) 1989,1990 Steven Lutrov |
; |_______________________________________________________________|____
; | | |
; | Program Title : FastKbd.Asm | | ___
; | Author : Steven Lutrov | | |
; | Revision : 2.01 | | |
; | Date : 1990-03-16 | | |
; | Language : Turbo Assembler | | |
; | | | |
; | | | |
; | Description : Assembly functions For Keyboard Operations. | | |
; | : Using Int 16H or Dos 21H. | | |
; | : Tested on Turbo Pascal 5.0 & 5.5 | | |
; |_______________________________________________________________| | |
; | | |
; |________________________________________________________________| |
; | |
; |_________________________________________________________________|
;
Code Segment Word Public
Assume Cs:Code, Ds:Data
Public Altkeydown,Capslockdown,Capslockon,Freshchar,Clearbuffer
Public Clearcapslock,Clearins,Clearnumlock,Clearscrolllock,Ctrlkeydown
Public Getscan,Inskeydown,Inskeyon,Keypause
Public Leftshiftdown,Nextkey,Lastkey,Numlockdown,Numlockon,Readchar
Public Readchar,Rightshiftdown,Scrolllockdown,Scrolllockon,Setcapslock
Public Setins,Setnumlock,Setscrolllock
Data Segment
Extrn Errreturn : Byte
Data Ends
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Function Altkeydown: Boolean;
;
;
Altkeydown Proc Far
Mov Ah,2 ;Bios Kybd Status Func
Int 16H ;Call The Interrupt
Mov Bl,1 ;True Value
Test Al,8 ;Test Bit 3
Jnz Altkeydownl1 ;Jump If True
Mov Bl,0 ;False Value
Altkeydownl1: Mov Al,Bl ;Place Value For Return
Ret
Altkeydown Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Function Capslockdown: Boolean;
;
;
Capslockdown Proc Far
Sub Ax,Ax ;Clear Ax
Mov Es,Ax ;Point Es To 0000:0000
Mov Si,418H ;Offset Of Status Byte
Mov Bl,64 ;Test Bit 6
Mov Al,1 ;True Value
Test Es:[Si],Bl ;Test The Bit
Jnz Capslockdownl1 ;Jump If True
Mov Al,0 ;False Value
Capslockdownl1: Ret
Capslockdown Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Function Capslockon: Boolean;
;
;
Capslockon Proc Far
Mov Ah,2 ;Bios Kybd Status Func
Int 16H ;Call The Interrupt
Mov Bl,1 ;True Value
Test Al,64 ;Test Bit 6
Jnz Capslockonl1 ;Jump If True
Mov Bl,0 ;False Value
Capslockonl1: Mov Al,Bl ;Place Value For Return
Ret
Capslockon Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Function Freshchar: Char;
;
;
Freshchar Proc Far
Mov Ah,0Ch ;Dos Function Number
Mov Al,7 ;Keyboard Read Function
Int 21H ;Wait For A Keystroke
Ret
Freshchar Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Procedure Clearbuffer;
;
;
Clearbuffer Proc Far
Clrbufferl1: Mov Ah,6 ;Function Number
Mov Dl,0Ffh ;Subfunction Number
Int 21H ;Seek Keystroke
Jnz Clrbufferl1 ;Repeat If One Found
Ret
Clearbuffer Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Procedure Clearcapslock;
;
;
Clearcapslock Proc Far
Sub Ax,Ax ;Clear Ax
Mov Es,Ax ;Es Pts To 0000:0000
Mov Al,10111111B ;Bit 6
And Es:[417H],Al ;Clear The Bit
Ret
Clearcapslock Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Procedure Clearins;
;
;
Clearins Proc Far
Sub Ax,Ax ;Clear Ax
Mov Es,Ax ;Es Pts To 0000:0000
Mov Al,01111111B ;Bit 7
And Es:[417H],Al ;Clear The Bit
Ret
Clearins Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Procedure Clearnumlock;
;
;
Clearnumlock Proc Far
Sub Ax,Ax ;Clear Ax
Mov Es,Ax ;Es Pts To 0000:0000
Mov Al,11011111B ;Bit 5
And Es:[417H],Al ;Clear The Bit
Ret
Clearnumlock Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Procedure Clearscrolllock;
;
;
Clearscrolllock Proc Far
Sub Ax,Ax ;Clear Ax
Mov Es,Ax ;Es Pts To 0000:0000
Mov Al,11101111B ;Bit 4
And Es:[417H],Al ;Clear The Bit
Ret
Clearscrolllock Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Function Ctrlkeydown: Boolean;
;
;
Ctrlkeydown Proc Far
Mov Ah,2 ;Bios Kybd Status Func
Int 16H ;Call The Interrupt
Mov Bl,1 ;True Value
Test Al,4 ;Test Bit 2
Jnz Ctrlkeydownl1 ;Jump If True
Mov Bl,0 ;False Value
Ctrlkeydownl1: Mov Al,Bl ;Place Value For Return
Ret
Ctrlkeydown Endp
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;Function Getscan: Byte;
;
;
Getscan Proc Far
Mov Dx,0Ffh ;Assume No Keystroke
Mov Ah,1 ;Bios Func To Chk Buffer
Int 16H ;Chk For Keystroke
Jz Getscanl4 ;Jump If Buffer Empty
Mov Dl,Ah ;Assume Ascii Code
Or Al,Al ;Test For Extended Code
Jnz Getscanl4 ;Jump If Ascii Code
Cmp Ah,84 ;Test For Func+Shift Keys
Jb Getscanl3 ;Jump Ahead If Below
Cmp Ah,94 ;Test If Func + Shift
Jnb Getscanl1 ;Jump Ahead If Not
Sub Ah